package com.bigstonecontainer.training.springboot.frm.server.sys.controller;

import com.bigstonecontainer.training.springboot.frm.server.core.domain.Result;
import com.bigstonecontainer.training.springboot.frm.server.sys.domain.SysRole;
import com.bigstonecontainer.training.springboot.frm.server.sys.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色控制器。
 *
 * @author jiaodacailei
 */
@RestController
@RequestMapping("/sys/role")
public class SysRoleController {

    /**
     * 注入SysRoleService
     */
    @Autowired
    private SysRoleService sysRoleService;

    /**
     * 角色列表查询
     *
     * @return 角色列表
     */
    @PostMapping("/list")
    public Result<List<SysRole>> getList() {
        List<SysRole> list = sysRoleService.getList();
        return Result.success(list);
    }

    /**
     * 获取单个角色信息
     *
     * @param id 角色ID
     * @return 单个角色信息
     */
    @GetMapping("/{id}")
    public Result<SysRole> getOne(@PathVariable("id") Long id) {
        SysRole one = sysRoleService.getOne(id);
        return Result.success(one);
    }

    /**
     * 新建一个角色
     *
     * @param role 角色
     * @return
     */
    @PostMapping
    public Result<Integer> create(@RequestBody SysRole role) {
        Integer result = sysRoleService.create(role);
        return Result.success(result);
    }

    /**
     * 修改一个角色
     *
     * @param role 角色
     * @return
     */
    @PutMapping
    public Result<Integer> updateById(@RequestBody SysRole role) {
        Integer result = sysRoleService.updateById(role);
        return Result.success(result);
    }

    /**
     * 删除单个角色
     *
     * @param id 角色ID
     * @return
     */
    @DeleteMapping("/{id}")
    public Result<Integer> delete(@PathVariable("id") Long id) {
        Integer result = sysRoleService.deleteById(id);
        return Result.success(result);
    }
}
